版权声明:本文为博主原创文章,转载请注明出处:http://blog.jerkybible.com/2015/05/09/Spring 使用简单Demo进行源码调试(二)/
访问原文「Spring 使用简单Demo进行源码调试(二)」
接上一篇文章 Spring 使用简单Demo进行源码调试(一)
在运行到下面语句
该构造函数首先进入下面ClassPathXmlApplicationContext类中这段代码。代码中configLocations为我们的配置文件,及[bean.xml];refresh表示是否刷新,这里为true,表示刷新配置;parent表示上级上下文,这里为null表示没有上级上下文。
下面是抽象函数AbstractRefreshableConfigApplicationContext中setConfigLocations方法。该方法为设置配置文件,及将[bean.xml]设置为本地的this.configLocations属性。
接着是refresh函数,该函数在AbstractApplicationContext类中,代码如下。可以看到该函数一共分为以下几步:
1. 为了刷新准备上下文;
2. 利用子类完成内部bean factory的刷新;
3. 使用本地上下文准备bean factory;
4. 允许在上下文子类中完成bean factory后处理;
5. 调用上下文注册的bean factory处理器;
6. 注册拦截bean创建的bean处理器;
7. 初始化上下文中消息源;
8. 初始化上下文中的事件多播;
9. 在特定上下文子类中初始化其他特殊bean;
10. 检查监听器bean并注册;
11. 实例化所有剩余(non-lazy-init)单例;
12. 发布相应的事件。
|
|
这里的每一步可能都很繁琐,鉴于我也是第一次看这些代码,还是慢慢进行分析吧,先到这里。